A system may receive a query from a device, e.g., a client device. The system may delegate work for the query or a portion of the query to a particular computer, e.g., a server that is included in the system. When the system allows parallel processing, the system may provide messages to multiple computers, in which each message indicates a task for the query, and receive responses from the computers. The system may combine data from the responses to determine data to send to the device.
For instance, each computer may be assigned particular portions of data for a database to manage. These individual portions of the database may be referred to as “tablets” or “shards,” and may include a portion of the data from a table or tables in a distributed database. When a device requests an operation on particular data in the distributed database (e.g., reading the particular data or writing the particular data), the shard (or in some cases shards) containing the particular data is identified, and the computer assigned the shard is instructed to perform the requested operation of the data in the shard.
Sometimes a system may generate multiple responses that each include partial results responsive to a query. The system may stream the multiple responses to the device from which the system received the query.